Session State হল একটি গুরুত্বপূর্ণ ASP.NET ফিচার যা ওয়েব অ্যাপ্লিকেশনে ইউজারের ডেটা সংরক্ষণ এবং ট্র্যাক করার জন্য ব্যবহৃত হয়। এটি ব্যবহারকারীর যাত্রার মধ্যে (যেমন বিভিন্ন পেজ ভিজিট করার সময়ে) ডেটা রেখে দেয়। একটি ওয়েব অ্যাপ্লিকেশন সাধারণত stateless, অর্থাৎ প্রতিটি রিকোয়েস্টের পর সেগুলি একে অপর থেকে আলাদা থাকে। তবে Session State ইউজারের ডেটা সাময়িকভাবে সংরক্ষণ করে, যাতে ইউজার যখন পেজ নেভিগেট করেন তখন ডেটা বজায় থাকে।
ASP.NET এ Session State Configuration এর মাধ্যমে আপনি কিভাবে সেশন সংরক্ষণ করবেন, কোথায় তা স্টোর হবে এবং কতদিন ধরে এটি কার্যকর থাকবে, তা নির্ধারণ করতে পারবেন।
Session State Types
ASP.NET এ সেশন ডেটা সংরক্ষণের বিভিন্ন পদ্ধতি বা mode আছে, যা আপনি কনফিগার করতে পারবেন। Session State Mode নির্ধারণ করে কোথায় সেশন ডেটা সংরক্ষণ হবে এবং এটি কিভাবে পরিচালিত হবে। নিচে বিভিন্ন Session State Modes এবং তাদের বৈশিষ্ট্য আলোচনা করা হয়েছে:
1. In-Process (Default)
In-Process মোডে, সেশন ডেটা Web server এর মেমরি (RAM) এ সংরক্ষিত হয়। এটি ডিফল্ট সেশন স্টেট মুড এবং সাধারণত ছোট অ্যাপ্লিকেশন বা সেশন ডেটা কম সময়ে প্রয়োজন এমন পরিস্থিতির জন্য উপযুক্ত।
বৈশিষ্ট্য:
- ডেটা RAM এ সংরক্ষণ হয়, তাই দ্রুত অ্যাক্সেস সম্ভব।
- সেশন স্টেট শুধুমাত্র একসাথে চলমান সার্ভারেই স্টোর থাকে।
- যদি সার্ভারটি রিস্টার্ট হয়, সেশন ডেটা হারিয়ে যাবে।
কনফিগারেশন:
Web.config ফাইলে In-Process মুড কনফিগার করতে হবে:
<configuration>
<system.web>
<sessionState mode="InProc" timeout="20" />
</system.web>
</configuration>
এখানে timeout সেটিংটি সেশনের মেয়াদ নির্ধারণ করে (মিনিটে)।
2. StateServer
StateServer মোডে, সেশন ডেটা একটি আলাদা State Server এ সংরক্ষিত হয়, যা অ্যাপ্লিকেশন সার্ভারের বাইরে থাকে। এটি একটি অ্যাপ্লিকেশনের জন্য সবচেয়ে উপযুক্ত যেটি একাধিক সার্ভার বা ক্লাস্টারড এনভায়রনমেন্টে চলতে পারে। State Server ব্যবহার করলে, সেশন ডেটা বিভিন্ন সার্ভারে শেয়ার করা যায় এবং সার্ভার রিস্টার্ট হলেও সেশন ডেটা সুরক্ষিত থাকে।
বৈশিষ্ট্য:
- সেশন ডেটা একটি আলাদা সার্ভারে সংরক্ষিত থাকে।
- বিভিন্ন সার্ভারে সেশন ডেটা শেয়ার করা যায়।
- সার্ভার রিস্টার্ট হলেও ডেটা হারানো এড়ানো যায়।
কনফিগারেশন:
Web.config ফাইলে StateServer মোড কনফিগার করতে হবে:
<configuration>
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
timeout="30" />
</system.web>
</configuration>
এখানে, stateConnectionString সেটিংটি দ্বারা স্টেট সার্ভারের ঠিকানা এবং পোর্ট নম্বর নির্ধারণ করা হয়।
3. SQLServer
SQLServer মোডে, সেশন ডেটা একটি SQL Server database এ সংরক্ষিত হয়। এই মোডটি এমন পরিস্থিতিতে ব্যবহৃত হয় যেখানে সেশন ডেটা দীর্ঘ সময়ের জন্য সংরক্ষণ করতে হবে অথবা সেশন ডেটা বিভিন্ন ওয়েব অ্যাপ্লিকেশন বা সার্ভারে শেয়ার করতে হবে। SQLServer মোডের একটি প্রধান সুবিধা হলো ডেটাবেস ব্যাকআপ এবং রিপ্লিকেশন সুবিধা।
বৈশিষ্ট্য:
- সেশন ডেটা SQL Server ডেটাবেসে সংরক্ষিত হয়।
- সেশন ডেটা নিরাপদ এবং সুরক্ষিত থাকে।
- বিভিন্ন সার্ভারে সেশন ডেটা শেয়ার করা যায়।
- সার্ভার রিস্টার্ট বা ক্র্যাশের পর ডেটা নিরাপদ থাকে।
কনফিগারেশন:
Web.config ফাইলে SQLServer মোড কনফিগার করতে হবে:
<configuration>
<system.web>
<sessionState mode="SQLServer"
sqlConnectionString="data source=localhost;Initial Catalog=ASPState;Integrated Security=SSPI;"
timeout="60" />
</system.web>
</configuration>
এখানে sqlConnectionString দিয়ে ডেটাবেসের সংযোগের তথ্য দেয়া হয়, যেমন ডেটাবেসের ঠিকানা এবং নাম।
4. Custom
Custom মোডটি ব্যবহার করা হয় যখন আপনি একটি কাস্টম স্টোরেজ সলিউশন ব্যবহার করতে চান সেশন ডেটা সংরক্ষণের জন্য। এটি সাধারণত StateServer বা SQLServer এর পরিবর্তে প্রয়োগ করা হয়, যেখানে আপনি আপনার নিজস্ব সেশন স্টেট ম্যানেজমেন্ট সিস্টেম তৈরি করতে পারেন।
বৈশিষ্ট্য:
- ব্যবহারকারী নির্ধারিত কাস্টম স্টোরেজ মেকানিজম।
- আপনি নিজে একটি কাস্টম সেশন স্টোরেজ এবং সেশন ম্যানেজমেন্ট ইমপ্লিমেন্ট করতে পারেন।
কনফিগারেশন:
Web.config ফাইলে Custom মোড কনফিগার করতে হবে:
<configuration>
<system.web>
<sessionState mode="Custom" customProvider="MyCustomProvider" />
</system.web>
</configuration>
এখানে customProvider দিয়ে কাস্টম স্টোরেজ প্রোভাইডারের নাম উল্লেখ করতে হবে।
Session State Timeout
Session Timeout হল সেশনের মেয়াদ নির্ধারণ করার একটি পদ্ধতি। যখন সেশনটি নির্দিষ্ট সময় ধরে ব্যবহার না হয়, তখন এটি স্বয়ংক্রিয়ভাবে শেষ হয়ে যায়। এটি timeout অ্যাট্রিবিউট দিয়ে কনফিগার করা হয়, যা মিনিটে নির্ধারণ করা হয়।
উদাহরণ:
<configuration>
<system.web>
<sessionState timeout="15" />
</system.web>
</configuration>
এখানে timeout="15" নির্দেশ করছে যে সেশনটি 15 মিনিট পর এক্সপায়ার হবে যদি ইউজার কোনো রিকোয়েস্ট না করেন।
Session State Modes Comparison
| Mode | Storage Location | Scalability | Use Case |
|---|---|---|---|
| In-Process | Server's memory (RAM) | Low | Small applications or temporary data storage. |
| StateServer | External server | Medium | Applications with multiple servers. |
| SQLServer | SQL Server Database | High | Large-scale applications with distributed sessions. |
| Custom | Custom storage | Depends on design | Custom storage solutions. |
Summary
Session State Configuration হল ASP.NET অ্যাপ্লিকেশনে ইউজারের সেশন ডেটা ম্যানেজ করার একটি গুরুত্বপূর্ণ অংশ। সেশন ডেটা সংরক্ষণের জন্য বিভিন্ন মোড ব্যবহৃত হয়, যেমন In-Process, StateServer, SQLServer, এবং Custom। আপনি Web.config ফাইলে এই মোডগুলো কনফিগার করে সেশন ম্যানেজমেন্ট পদ্ধতিটি নির্বাচন করতে পারেন। সেশন টাইমআউট কনফিগার করার মাধ্যমে আপনি সেশন শেষ হওয়ার সময় নির্ধারণ করতে পারেন, যা নিরাপত্তা এবং অ্যাপ্লিকেশন পারফরম্যান্সে গুরুত্বপূর্ণ ভূমিকা রাখে।
Read more